Im Gegensatz zu Programmiersprachen wie Java oder C++ kann Visual Basic ...
das Verhalten anderer Objekte nicht erben
Nebenläufigkeit (Multithreading) nicht abbilden
Fehler nur ungenügend behandeln
wegen seiner schwachen Typenbindung schlecht mit anderen Programmiersprachen kommunizieren.
Die Funktionalität von Visual Basic lässt sich allerdings mit Codebibliotheken, sogenannten Dynamic Link Libraries (DLL's), erweitern. Eine modernere Form von DLL's, ActiveX-Controls, basiert auf dem Component Objects Model (COM) von Microsoft. COM wurde vor allem für konventionelle Client/Server-Anwendungen unter MS Windows konzipiert. Die Anwendung von COM auf das Internet (Distributed InterNet Architecture, DNA) stiess allerdings auf Grenzen:
DLL's sind nicht portabel
Weil DLL's in der Windows Registry stehen müssen, ist die Verbreitung über das Internet erschwert
COM unterstützt keine ausgebauten Vererbungsmöglichkeiten.
Die Internet-Entwicklung ist allerdings auch unter anderen Programmiersprachen und Komponentenmodellen schwierig:
Die GUI-Programmierung auf dem Internet ist aufwändiger als auf dem Client.
Im Gegensatz zu einem Client-GUI "erinnert" sich ein Internet-GUI nach dem Wechsel einer HTML-Seite nicht automatisch an die angezeigten Daten.
Aus diesen und anderen Gründen hat sich Microsoft im Jahr 2000 entschlossen, die meisten seiner Produkte auf eine neue Basis zu stellen. Das wichtigste Ziel von Microsoft's .NET-Initiative (sprich "dot net") ist Interoperabilität, das heisst die Kommunikation zwischen Anwendungen, insbesondere über das Internet. Dazu gehört auch die Verknüpfung mehrerer Programmiersprachen auf einer gemeinsamen Basis (zum Beispiel einer gemeinsamen Laufzeitumgebung für C# und Visual Basic.NET). Diese Interoperabilität erleichtert zum Beispiel Anwendungen, welche den Benutzer auf dem Internet suchen lassen und die Ergebnisse in einer lokalen Anwendung weiterverwendend.
Das .NET Framework ist ein System von Codebibliotheken zwischen dem Endbenutzer und dem Betriebsystem, das diese Ziele realisiert und besteht aus drei Schichten ...
Common Language Runtime
Übersetzung von Programmcode in gemeinsamen Zwischen- und Binärcode, der auf verschiedenen Plattformen läuft
Kommunikation zwischen Programmiersprachen, insbesondere durch gemeinsame Datentypen
gemeinsame Speicherverwaltung
u.a.m.
Base Classes
Multithreading
Sicherheit
Netzwerkprotokolle
u.a.m.
Benutzerschnittstellen
Windows Forms (benutzerfreundlicher ereignisbasierter GUI-Entwurf für alle .NET-Programmiersprachen)
Web Forms (benutzerfreundlicher ereignisbasierter GUI-Entwurf für das Web. Vergleichbar mit der konventionellen GUI-Programmierung unter VBA)
Web Services (benutzerfreundliche verteilte Softwareentwicklung für das Web).
Zur letzten Schicht gehört insbesondere ASP.NET. Dies ist eine Weiterentwicklung von ASP für das .NET Framework, welche die Präsentation unter HTML und die Anwendungslogik unter Visual Basic trennt: Der HTML-Code und der Visual Basic-Code befinden sich in getrennten .aspx und .vb-Textdateien.